

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
<head>
<script type="text/javascript" src="helpman_topicinit.js"></script>

<title>Connectors [Enterprise Architect User Guide]</title>

<meta name="keywords" content="Enterprise Architect, Sparx Systems, UML, MDA-Style Transformation,MDA-Style Transformation Transform Connectors,MDA-Style Transformation Create Connectors,Connector,Connector Transform,Connector Create In MDA-Style Transformation,Connector To Class Created In Transformation,Macro,Macro TRANSFORM_REFERENCE,TRANSFORM_REFERENCE,TRANSFORM_REFERENCE Macro,Class,Class Created In Transformation, Connect To">
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<meta http-equiv="Content-Style-Type" content="text/css" />

<link type="text/css" href="default.css" rel="stylesheet" />
<style type="text/css">
  A, A:Visited
  {
    color: #00F;
  }

  A:Active, A:Hover
  {
    color: #F00;
  }

  OL
  {
    margin: 5px 0 5px 48px;
  }

  UL
  {
    margin-bottom: 3px;
    margin-top: 0;
  }

  #nsr
  {
    background-color: #D4DFFF;
  }

  #nsr A
  {
    text-decoration: none;
  }

  #mainbody
  {
    padding: 8px;
  }

  .p_BodyText
  {
    padding: 5px 0;
  }
</style>



<style type="text/css" media="screen">
  BODY
  {
    background-color: #FFFFFF;
  }

  #nsr
  {
    padding: 6px 6px 0 6px;
    border-bottom: none;
    vertical-align: top;
    z-index: 2;
    visibility: visible;
    left: 0;
    top: 0;
    position: absolute;
  }

  #mainbody
  {
    left: 0;
    top: 0;
    margin: 0;
    position: absolute;
    padding: 10px;
    overflow: auto;
    height: 100%;
    z-index: 1;
    background-repeat: no-repeat;
    background-position: bottom right;
    background-attachment: fixed;
  }
</style>

<style type="text/css" media="print">
  #nsr
  {
    visibility: none;
  }

  #mainbody
  {
    overflow: visible;
  }
</style>
<script type="text/javascript" language="JavaScript" src="nonscroll.js"></script>

</head>
<body scroll="no">

<div id="page">



        <div id="content">
          <div id="content-inner">
          



  
          <div id="nsr">
            <table border="0" cellspacing="0" cellpadding="4" width="100%">
              <tr valign="top">
                <td align="left">
  


                  <p class="p_Heading1"><span class="f_Heading1">Connectors</span></p>



  
                </td>
                <td align="right">
                  <a href="introduction.htm" onmouseover="document.images.main.src='button_main_h.gif'" onmouseout="document.images.main.src='button_main.gif'">
                    <img name="main" src="button_main.gif" border=0 alt="Return to Introduction">
                  </a>&nbsp;
    
                  <a href="transformingobjects.htm" onmouseover="document.images.prev.src='button_prev_h.gif'" onmouseout="document.images.prev.src='button_prev.gif'">
                    <img name=prev src="button_prev.gif" border=0 alt="Previous page" />
                  </a>&nbsp;
    
    
    
                  <a href="transformingduplicateinforma.htm" onmouseover="document.images.next.src='button_next_h.gif'" onmouseout="document.images.next.src='button_next.gif'">
                    <img name=next src="button_next.gif" border=0 alt="Next page" />
                  </a>
    
    
                </td>
              </tr>
            </table>
          </div>
          <div id="mainbody">
  


                <p class="p_BodyText"><span class="f_BodyText">Creating connectors in a transformation can be complex, but the process has the same form as creating elements. The difference is that you must also specify each end.</span></p>
<p class="p_BodyText"><span class="f_BodyText">The different connectors that can be created are as follows.</span></p>
<ul style="text-indent: 0px; margin-left: 30px; list-style-position: outside;">
<li><span class="f_Bulletlist1">Aggregation</span></li>
<li><span class="f_Bulletlist1">Assembly</span></li>
<li><span class="f_Bulletlist1">Association</span></li>
<li><span class="f_Bulletlist1">Collaboration</span></li>
<li><span class="f_Bulletlist1">ControlFlow</span></li>
<li><span class="f_Bulletlist1">Connector</span></li>
<li><span class="f_Bulletlist1">Delegate</span></li>
<li><span class="f_Bulletlist1">Dependency</span></li>
<li><span class="f_Bulletlist1">Deployment</span></li>
<li><span class="f_Bulletlist1">ForeignKey</span></li>
<li><span class="f_Bulletlist1">Generalization</span></li>
<li><span class="f_Bulletlist1">InformationFlow</span></li>
<li><span class="f_Bulletlist1">Instantiation</span></li>
<li><span class="f_Bulletlist1">Interface</span></li>
<li><span class="f_Bulletlist1">InterruptFlow</span></li>
<li><span class="f_Bulletlist1">Manifest</span></li>
<li><span class="f_Bulletlist1">Nesting</span></li>
<li><span class="f_Bulletlist1">NoteLink</span></li>
<li><span class="f_Bulletlist1">ObjectFlow</span></li>
<li><span class="f_Bulletlist1">Package</span></li>
<li><span class="f_Bulletlist1">Realisation</span></li>
<li><span class="f_Bulletlist1">Sequence</span></li>
<li><span class="f_Bulletlist1">Transition</span></li>
<li><span class="f_Bulletlist1">UseCase</span></li>
<li><span class="f_Bulletlist1">Uses</span></li>
</ul>
<div style="text-align: left; text-indent: 0px; padding: 0px 0px 0px 0px; margin: 5px 0px 5px 13px;"><table cellspacing="0" cellpadding="2" border="0" style="border: none; border-spacing:0px;">
<tr style="text-align:left;vertical-align:bottom;">
<td valign="bottom" width="952" bgcolor="#efeff7" style="width:952px; background-color:#efeff7;"><p class="p_TiporNote" style="border-top: none; border-right: none; border-left: none;"><span class="f_TiporNote">Note:</span></p>
</td>
</tr>
<tr style="text-align:left;">
<td width="952" bgcolor="#f7f7ff" style="width:952px; background-color:#f7f7ff;"><p class="p_TiporNoteText"><span class="f_TiporNoteText" style="font-style: italic;">ForeignKey</span><span class="f_TiporNoteText"> is a special case where not just a connector is created; you must also list the columns involved in the transformation. In addition, tags specified on the connector are actually created on the foreign key operation in the source Class, and a cascade property can be added; for example, </span><span class="f_TiporNoteText" style="font-style: italic;">cascade=&quot;update&quot;,&quot;delete&quot;.</span></p>
</td>
</tr>
</table>
</div>
<p class="p_BodyText"><span class="f_BodyText">There are two different types of Class that you can use as a connector end: one created by a transformation, and one for which you already know the GUID.</span></p>
<p class="p_SubHeadingL1"><span class="f_SubHeadingL1">Connect to a Class Created by a Transformation</span></p>
<p class="p_BodyText"><span class="f_BodyText">The most common connection is to connect to a Class created by a transformation. To do this you must have three items of information:</span></p>
<ul style="text-indent: 0px; margin-left: 30px; list-style-position: outside;">
<li><span class="f_Bulletlist1">The original Class GUID</span></li>
<li><span class="f_Bulletlist1">The name of the transformation</span></li>
<li><span class="f_Bulletlist1">The name of the transformed Class.</span></li>
</ul>
<p class="p_BodyText"><span class="f_BodyText">This type of connector is created using the </span><span class="f_BodyText" style="font-weight: bold;"><a href="crossreferences2.htm">TRANSFORM_REFERENCE</a></span><span class="f_BodyText"> function macro. When the element is in the current transformation, it can be safely omitted from the transformation. The simplest example of this is when you have created multiple Classes from a single Class in a transformation and want a connector between them. Consider this example from the EJB Entity transformation:</span></p>
<p class="p_Code"><span class="f_Code">Dependency</span></p>
<p class="p_Code"><span class="f_Code">{</span></p>
<p class="p_Code"><span class="f_Code">  %TRANSFORM_REFERENCE(&quot;EJBRealizeHome&quot;,classGUID)%</span></p>
<p class="p_Code"><span class="f_Code">  stereotype=&quot;EJBRealizeHome&quot;</span></p>
<p class="p_Code"><span class="f_Code">  Source</span></p>
<p class="p_Code"><span class="f_Code">  {</span></p>
<p class="p_Code"><span class="f_Code"> &nbsp;&nbsp; %TRANSFORM_REFERENCE(&quot;EJBEntityBean&quot;,classGUID)%</span></p>
<p class="p_Code"><span class="f_Code">  }</span></p>
<p class="p_Code"><span class="f_Code">  Target</span></p>
<p class="p_Code"><span class="f_Code">  {</span></p>
<p class="p_Code"><span class="f_Code"> &nbsp;&nbsp; %TRANSFORM_REFERENCE(&quot;EJBHomeInterface&quot;,classGUID)%</span></p>
<p class="p_Code"><span class="f_Code">  }</span></p>
<p class="p_Code"><span class="f_Code">}</span></p>
<p class="p_BodyText"><span class="f_BodyText">There are three uses of the </span><span class="f_BodyText" style="font-weight: bold;">TRANSFORM_REFERENCE</span><span class="f_BodyText"> macro: one to identify this connector for synchronization purposes and the other two to identify the ends. All three use the same source GUID, because they all come from the one original Class. None of the three have to specify the transformation because the two references are referencing something in the current transformation. Each of them then only has to identify the transform name.</span></p>
<p class="p_BodyText"><span class="f_BodyText">Of course it is also possible to create a connector from another connector.</span></p>
<p class="p_BodyText"><span class="f_BodyText">You can create a connector template and list over all connectors connected to a Class from the Class level templates. You don't have to worry about only generating it once, because if you have created a </span><span class="f_BodyText" style="font-weight: bold;">TRANSFORM_REFERENCE</span><span class="f_BodyText"> for the connector then Enterprise Architect automatically synchronizes them. The following copies the source connector.</span></p>
<p class="p_Code"><span class="f_Code">%connectorType%</span></p>
<p class="p_Code"><span class="f_Code">{</span></p>
<p class="p_Code"><span class="f_Code">  %TRANSFORM_CURRENT()%</span></p>
<p class="p_Code"><span class="f_Code">  %TRANSFORM_REFERENCE(&quot;Connector&quot;,connectorGUID)%</span></p>
<p class="p_Code"><span class="f_Code">  Source</span></p>
<p class="p_Code"><span class="f_Code">  {</span></p>
<p class="p_Code"><span class="f_Code"> &nbsp;&nbsp; %TRANSFORM_REFERENCE(&quot;Class&quot;,connectorSourceGUID)%</span></p>
<p class="p_Code"><span class="f_Code"> &nbsp;&nbsp; %TRANSFORM_CURRENT(&quot;Source&quot;)%</span></p>
<p class="p_Code"><span class="f_Code">  }</span></p>
<p class="p_Code"><span class="f_Code">  Target</span></p>
<p class="p_Code"><span class="f_Code">  {</span></p>
<p class="p_Code"><span class="f_Code"> &nbsp;&nbsp; %TRANSFORM_REFERENCE(&quot;Class&quot;,connectorDestGUID)%</span></p>
<p class="p_Code"><span class="f_Code"> &nbsp;&nbsp; %TRANSFORM_CURRENT(&quot;Target&quot;)%</span></p>
<p class="p_Code"><span class="f_Code">  }</span></p>
<p class="p_Code"><span class="f_Code">}</span></p>
<p class="p_SubHeadingL1"><span class="f_SubHeadingL1">Connecting to a Class For Which You Know the GUID</span></p>
<p class="p_BodyText"><span class="f_BodyText">The second type of Class that you can use as a connector end is one for which you know the current GUID. To do this, specify the GUID of the target Class in either the source or target end. The following example creates a dependency from a Class created in a transformation, to the Class it was transformed from.</span></p>
<p class="p_Code"><span class="f_Code">Dependency</span></p>
<p class="p_Code"><span class="f_Code">{</span></p>
<p class="p_Code"><span class="f_Code">  %TRANSFORM_REFERENCE(&quot;SourceDependency&quot;,classGUID)%</span></p>
<p class="p_Code"><span class="f_Code">  stereotype=&quot;transformedFrom&quot;</span></p>
<p class="p_Code"><span class="f_Code">  Source</span></p>
<p class="p_Code"><span class="f_Code">  {</span></p>
<p class="p_Code"><span class="f_Code"> &nbsp;&nbsp; %TRANSFORM_REFERENCE(&quot;Class&quot;,classGUID)%</span></p>
<p class="p_Code"><span class="f_Code">  }</span></p>
<p class="p_Code"><span class="f_Code">  Target</span></p>
<p class="p_Code"><span class="f_Code">  {</span></p>
<p class="p_Code"><span class="f_Code"> &nbsp;&nbsp; GUID=%qt%%classGUID%%qt%</span></p>
<p class="p_Code"><span class="f_Code">  }</span></p>
<p class="p_Code"><span class="f_Code">}</span></p>




            </div>
          </div>
        </div>



</div>


</body>
</html>
